If-None-Match header
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Der HTTP-If-None-Match
-Anfrage-Header macht eine Anfrage konditional.
Der Server gibt die angeforderte Ressource in den Methoden GET
und HEAD
mit einem 200
-Status nur dann zurück, wenn er kein ETag
hat, das mit dem im If-None-Match
-Header angegebenen Wert übereinstimmt.
Für andere Methoden wird die Anfrage nur verarbeitet, wenn das gegebenenfalls existierende Ressource-ETag
mit keinem der aufgelisteten Werte übereinstimmt.
Wenn die Bedingung für die Methoden GET
und HEAD
fehlschlägt, muss der Server einen 304 Not Modified
zurückgeben und eines der folgenden Header-Felder, die in einer 200-Antwort auf dieselbe Anfrage gesendet worden wären: Cache-Control
, Content-Location
, Date
, ETag
, Expires
, und Vary
.
Für Methoden, die serverseitige Änderungen anwenden, wird der 412 Precondition Failed
verwendet, wenn die Bedingung fehlschlägt.
Der Vergleich mit dem gespeicherten ETag verwendet den schwachen Vergleichsalgorithmus, was bedeutet, dass zwei Dateien als identisch betrachtet werden, wenn der Inhalt gleichwertig ist — sie müssen nicht byteweise identisch sein. Zum Beispiel würden zwei Seiten, die sich nur durch ihr Erstellungsdatum im Footer unterscheiden, trotzdem als identisch angesehen werden.
In Kombination mit If-Modified-Since
hat If-None-Match
Vorrang, wenn der Server es unterstützt.
Es gibt zwei häufige Fälle für die Verwendung von If-None-Match
in Anfragen:
- Für die Methoden
GET
undHEAD
, um eine zwischengespeicherte Entität zu aktualisieren, die mit einem ETag verbunden ist. - Für andere Methoden, insbesondere für
PUT
, kannIf-None-Match
mit dem*
-Wert verwendet werden, um eine Datei nur dann zu speichern, wenn sie noch nicht existiert, was garantiert, dass das Hochladen nicht versehentlich ein anderes Hochladen überschreibt und die Daten des vorherigenPUT
verliert; dieses Problem ist eine Variante des Versionsverwaltungsproblems.
Header-Typ | Anfrage-Header |
---|---|
Verbotener Anfrage-Header | Nein |
Syntax
If-None-Match: "<etag_value>"
If-None-Match: "<etag_value>", "<etag_value>", …
If-None-Match: *
Direktiven
<etag_value>
-
Entitätstags, die die angeforderten Ressourcen eindeutig repräsentieren. Sie sind eine Zeichenkette aus ASCII-Zeichen, die in Anführungszeichen gesetzt werden (wie
"675af34563dc-tr34"
) und können mitW/
vorangestellt werden, um anzuzeigen, dass der schwache Vergleichsalgorithmus verwendet werden soll (dies ist mitIf-None-Match
nutzlos, da es nur diesen Algorithmus verwendet). *
-
Der Stern ist ein besonderer Wert, der eine beliebige Ressource darstellt. Er ist nur nützlich beim Hochladen einer Ressource, üblicherweise mit
PUT
, um zu überprüfen, ob eine andere Ressource mit derselben Identität bereits zuvor hochgeladen wurde.
Beispiele
If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"
If-None-Match: W/"67ab43", "54ed21", "7892dd"
If-None-Match: *
Spezifikationen
Specification |
---|
HTTP Semantics # field.if-none-match |
Browser-Kompatibilität
Siehe auch
ETag
If-Match
,If-Modified-Since
,If-Unmodified-Since
konditionale Anfrage-Header304 Not Modified
,412 Precondition Failed
Antwortstatuscodes